<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/ajax.js"></script>
</head>

<body>

</body>
<script>

    // 构造函数Promise的方法     => Array.isArray() String.fromCharCode()  Date.now()

    // race()    =>   Promise.race()
    // Promise.race()方法用于将多个 Promise 实例，包装成一个新的 Promise 实例。

    // 上面代码中，只要p1、p2、p3之中有一个实例率先改变状态，p的状态就跟着改变。那个率先改变的 Promise 实例的返回值，就传递给p的回调函数。

    // T1
    // T2   => T  按最快的来  
    // T3

    function readText(url, delay = 0) {
        var p = new Promise(function (resolve, reject) {
            setTimeout(function () {
                $.ajax({
                    type: "get",
                    url: url,
                    // dataType: "text",
                    success: function (txt) {
                        resolve(txt);
                    }
                });
            }, delay);
        })
        return p;
    }


    console.time("a");
    var p1 = readText("../data/1.txt", 1000);
    var p2 = readText("../data/2.txt", 3000);
    var p3 = readText("../data/3.txt", 200);

    var p = Promise.race([p1, p2, p3]);
    console.log(p);

    p.then(txt => {
        console.log("已成功", txt);
        console.timeEnd("a");
    }).catch(err => {
        console.log("已失败", err);
    })


    // Promise.race([
    //     readText("../data/1.txt", 1000),
    //     readText("../data/2.txt", 3000),
    //     readText("../data/3.txt", 2000)
    // ]).then(txt => {
    //     console.log("已成功", txt);
    //     console.timeEnd("a");
    // }).catch(err => {
    //     console.log("已失败", err);
    // })


</script>

</html>